home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64-128Toolkit / MSD-DU10.ARC / MSD - PART 07 < prev    next >
Encoding:
Text File  |  2019-04-13  |  5.0 KB  |  57 lines

  1. ║CM:MSD - PART 07
  2. ║LM21:RM70:PP66:PG60
  3. ║P#13
  4. ║FT1:,,╨AGE <>
  5. ║AI-16
  6. $├462           ╔NCREMENT .┘ TO POINT TO THE TRACK LINK FOR THE FILE.
  7. $├463           ╙AVE .┴ (FILE TYPE) ON THE STACK.
  8. $├464           ┴╬─ .┴ WITH $40 (FILE LOCKED BIT) AND SAVE THIS RESULT IN ╘0 [$48].
  9. $├468           ╨ULL .┴ (FILE TYPE) OFF THE STACK AND ┴╬─ WITH $─╞ (ELIMINATES DELETED WITH REPLACEMENT FLAG) AND SEE IF BIT 7 IS SET.  ╔F IT SET THEN THE FILE WAS CLOSED PROPERLY SO BRANCH TO ├╨42.
  10. $├46─           ╙ET THE DELETE WITH REPLACEMENT FLAG (╧╥ .┴ WITH $20).
  11. $├46╞  ├╨42     ┴╬─ .┴ WITH $27 TO MASK OFF EVERYTHING EXCEPT THE FILE TYPE AND REPLACEMENT BITS.
  12. $├471           ╧╥ .┴ WITH ╘0 [$48] TO RESTORE THE LOCKED BIT.
  13. $├473           ╙AVE .┴ IN ╘0 [$48].
  14. $├475           ╧BTAIN BIT 7 OF ╨┴╘╘┘╨,╪ [$4├71,╪] FOR THIS FILE, ╧╥ IN ╘0 [$48], AND SAVE THE RESULT BACK INTO ╨┴╘╘┘╨,╪ [$4├71,╪].
  15. $├47╞           ╧BTAIN ╞╔╠─╥╓,╪ [$4├6├,╪] (DRIVE # FOR THIS FILE NAME), ┴╬─ IT WITH $80 TO RETAIN THE DEFAULT BIT, ╧╥ IN ─╥╓╬╒═ [$54], AND SAVE THE RESULT BACK INTO ╞╔╠─╥╓,╪ [$4├6├,╪].
  16. $├489           ╧BTAIN THE TRACK LINK FOR THE FILE FROM THE DIRECTORY (─╔╥┬╒╞),┘ [($69),┘] AND SAVE INTO ╞╔╠╘╥╦,╪ [$4┼36,╪].
  17. $├48┼           ╔NCREMENT .┘ TO POINT TO THE SECTOR LINK AND OBTAIN THE SECTOR LINK FROM (─╔╥┬╒╞),┘ [($69),┘] AND SAVE INTO ╞╔╠╙┼├,╪ [$4┼3┬,╪].
  18. $├494           ╔F ╥┼├ [$┬9], THE RECORD LENGTH, IS NOT ZERO THEN CONTINUE WITH ├═╨├╚╦ [$├49┼] TO SEE IF ALL FILES HAVE BEEN FOUND.
  19. $├498           ╧BTAIN THE RECORD LENGTH FROM THE DIRECTORY ENTRY (─╔╥┬╒╞),┘ [($69),┘] AND SAVE IT IN ╥┼├ [$┬9].
  20.  
  21.  
  22.  
  23.        ├═╨├╚╦   ├HECK FILE TABLE FOR UNFOUND FILES
  24.  
  25. $├49┼           ╙ET ╞╧╒╬─ [$4├┼0] TO $╞╞ TO INDICATE ALL FILES ARE FOUND.
  26. $├4┴3           ├OPY ╞2├╬╘ [$┬3] TO ╞2╨╘╥ [$┬4].  ╞2╨╘╥ IS USED AS A LOCAL COUNTER SINCE WE DON'T WANT TO LOSE THE ORIGINAL VALUE.
  27. $├4┴7  ├├10     ─ECREMENT ╞2╨╘╥ [$┬4] SO IT CONTAINS THE INDEX OF ONE OF THE FILE NAMES IN THE TABLE.  ╔F THIS COUNT IS >= 0 THEN WE HAVE NOT REACHED THE END OF THE FILE TABLE SO BRANCH TO ├├15 TO SEE IF THIS ENTRY HAS BEEN FOUND.
  28. $├4┴┬           ┴LL FILES FOUND SO RETURN.
  29. $├4┴├  ├├15     ╠OAD .╪ WITH ╞2╨╘╥ [$┬6], THE INDEX OF THE FILE NAME IN THE TABLE.
  30. $├4┴┼           ╔F BIT 7 OF ╨┴╘╘┘╨,╪ [$4├71,╪] IS SET THEN THIS FILE HAS NOT YET BEEN FOUND SO BRANCH TO ├├20.
  31. $├4┬3           ╔F ╞╔╠╘╥╦,╪ [$4┼36,╪] IS NOT ZERO THEN THE FILE HAS BEEN FOUND SO BRANCH TO ├├10 TO CHECK THE NEXT FILE NAME.
  32. $├4┬8  ├├20     ╞ILE HAS NOT BEEN FOUND SO SET ╞╧╒╬─ [$4├┼0] TO ZERO AND RETURN.
  33. ║FP
  34.        ╙╥├╚╙╘   ╙ET UP TO START DIRECTORY SEARCH
  35.  
  36. $├4┬┼           ╩╙╥ ┴╒╘╧╔ [$├54╞] TO CHECK THE DRIVE FOR DISKETTE AND INITIALIZE.
  37. $├4├1           ├LEAR ─┼╠╙┼├ [$4├┼2] AND SET ┼╬╘╞╬─ [$4├┬5] TO $╞╞ TO INDICATE AN ENTRYHAS NOT BEEN FOUND.
  38. $├4├┴           ├OPY ─╔╥╘╥╦ [$╞┼6┬] TO ╘╥┴├╦ [$55] AND SET THE ╙┼├╘╧╥ [$56] TO $01.
  39. $├4─3           ╙ET ╠╙╘┬╒╞ [$4├┼3] TO $01 TO INDICATE ╬╧╘ LAST BLOCK.
  40. $├4─6           ╩╙╥ ╧╨╬╔╥─ [$─4─┼] TO OPEN A READ CHANNEL AND GET THE FIRST 1 OR 2 BLOCKS OF THE DIRECTORY.
  41. $├4─9  ╙╥10     ╔F ╠╙╘┬╒╞ [$4├┼3] IS NOT ZERO THEN WE HAVE NOT YET EXHAUSTED THE DIRECTORY SO BRANCH TO ╙╥15 TO SCAN THE ENTRIES.
  42. $├4─┼           ╥ETURN.
  43. $├4─╞  ╙╥15     ╙ET ╞╔╠├╬╘ [$4├┼5] TO $07 TO INDICATE 8 ENTRIES ARE TO BE SCANNED (0-7 INCLUSIVE).
  44. $├4┼4           ╙ET .┴ TO $00 AND ╩╙╥ ─╥─┬┘╘ [$─561] TO OBTAIN THE FIRST BYTE OF THE DIRECTORY.
  45. $├4┼9           ╘HIS BYTE IS THE NEXT TRACK LINK.  ╙AVE IT INTO ╠╙╘┬╒╞ [$4├┼3] SO THAT IF THIS BLOCK IS THE LAST THEN ╠╙╘┬╒╞ WILL BE ZERO.
  46. $├4┼├  ╙╥20     ╩╙╥ ╟┼╘╨╬╘ [$─553] TO SET UP A POINTER TO THE DIRECTORY BLOCK - NAMELY ─╔╥┬╒╞ [$69-6┴].
  47. $├4┼╞           ─ECREMENT ╞╔╠├╬╘ [$4├┼5], THE NUMBER OF ENTRIES REMAINING TO BE SCANNED AND SET .┘ TO 0.
  48. $├4╞2           ╟ET THE FILE TYPE FROM THE DIRECTORY ENTRY (─╔╥┬╒╞),┘ [($69),┘] AND IF NOT ZERO THEN THIS IS NOT A DELETED/UNUSED ENTRY SO BRANCH TO ╙╥30.
  49. $├4╞8           ╘HIS ENTRY IS AVAILABLE.  ╔F ─┼╠╙┼├ [$4├┼2] IS NON-ZERO THEN AN AVAILABLE ENTRY HAS ALREADY BEEN FOUND SO BRANCH TO ╙┼┴╥├╚ [$├529] TO CONTINUE THE SCAN.
  50. $├4╞─           ╩╙╥ ├╒╥┬╠╦ [$──┼6] TO SET UP TRACK AND SECTOR FOR THIS BLOCK AND THEN COPY THE ╙┼├╘╧╥ [$56] NUMBER TO ─┼╠╙┼├ [$4├┼2].
  51. $├505           ╧BTAIN THE OFFSET TO THIS AVAILABLE ENTRY FROM THE LOW ORDER BYTE OF ─╔╥┬╒╞ [$69].
  52. $├507           ╠OAD .╪ FROM ─┼╠╔╬─ [$┴╞] TO SEE IF WE ARE LOOKING FOR A VALID FILE.  ╔F THIS IS THE CASE THEN ─┼╠╔╬─ WILL BE ZERO AND THE LOAD WILL SET THE .┌ FLAG.
  53. $├509           ╙AVE THE OFFSET OF THE AVAILABLE ENTRY INTO ─┼╠╔╬─ [$┴╞].  ╘HIS VALUE WILL BE $02, $22, ...
  54. $├50┬           ╔F WE ARE LOOKING FOR A VALID ENTRY THEN BRANCH TO ╙┼┴╥├╚ [$├529].  ╬OTE: ┼VEN THOUGH THE ─┼╠╔╬─ FLAG HAS BECOME NON-ZERO, THE CODE AT ╙╥30 CHECKS THE VALUE AGAINST 1 SO THE NEW VALUES ABOVE STILL SERVE AS THE CORRECT MEANING.
  55. $├50─           ╫E WERE LOOKING FOR AN AVAILABLE ENTRY AND WE HAVE FOUND ONE SO RETURN.
  56. $├50┼  ╙╥30     ╔F ─┼╠╔╬─ [$┴╞] IS NOT $01 WE ARE LOOKING FOR A VALID ENTRY AND WE HAVE FOUND ONE SO BRANCH TO ╙╥50.  ╔F ─┼╠╔╬─ IS $01 THEN BRANCH TO ╙┼┴╥├╚ TO CONTINUE LOOKING FOR AN AVAILABLE ENTRY.
  57.